package com.demo.core.service.base;

import java.util.List;

import com.demo.core.model.ConfigItem;

/**
 * 配置子项服务接口
 * 
 * @author ryuu.kk
 *
 */
public interface ConfigItemService {
	
	/**
	 * 存储ConfigItem模型
	 * @param item configItem模型对象
	 * @return 主键ID
	 */
	Long save(ConfigItem item);
	
	/**
	 * 判断ConfigItem模型是否存在
	 * @param id 主键ID
	 * @return 是否存在
	 */
	boolean exists(Long id);
	
	/**
	 * 更新可用标志
	 * @param id 主键ID
	 * @param enabled 是否可用
	 * @param status 配置状态
	 */
	void updateStatus(Long id, boolean enabled, String status);
	
	/**
	 * 更新配置子项信息
	 * @param id 配置子项ID
	 * @param name 配置子项标题
	 * @param value 配置子项Value
	 */
	void update(Long id, String name, String value);
	
	/**
	 * 更新配置子项信息
	 * @param id 配置子项ID
	 * @param name 配置子项标题
	 * @param value 配置子项Value
	 * @param text 配置Text内容
	 */
	void update(Long id, String name, String value, String text);
	
	/**
	 * 删除配置信息
	 * @param id 配置ID
	 */
	void delete(Long id);
	
	/**
	 * 删除所有配置的子项
	 * @param configId 配置ID
	 */
	void deleteItems(Long configId);
	/**
	 * 取得配置子项属性
	 * @param configId 配置ID
	 * @return 配置子项模型对象
	 */
	ConfigItem find(Long id);
	
	/**
	 * 通过配置ID查询站点的所有配置子项
	 * @param configId 配置ID
	 * @return 站点配置子项对象模型
	 */
	List<ConfigItem> findAll(Long configId);
	
	/**
	 * 通过配置ID和国家化CODE查询站点的所有配置子项
	 * @param configId 配置ID
	 * @param i18n 数据语言
	 * @return 站点配置子项对象模型
	 */
	List<ConfigItem> findAll(Long configId, String i18n);

	/**
	 * 
	 * @return
	 */
	//Config query(Long id);
}
